package com.xnyzc.lhy.didi.feign.mq;

import com.xnyzc.lhy.common.entity.Rv;
import com.xnyzc.lhy.didi.entity.order.InitiatePaymentParam;
import com.xnyzc.lhy.didi.entity.order.OaCOrderPersonal;
import com.xnyzc.lhy.didi.entity.param.order.OrderArrivalsParam;
import com.xnyzc.lhy.didi.feign.fallback.mq.MqServiceFallbackImpl;
import com.xnyzc.lhy.order.entity.order.OaDOrder;
import com.xnyzc.lhy.order.entity.order.OaOrderOtherPrice;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * mq
 *
 * @author zhengxu
 * FIXME: 2020-2-10 hu 将MQ的服务间调用更改为直发(保留注释代码防止更改后无法使用)
 */
@FeignClient(name = "${feign.applicationName.order}", fallback = MqServiceFallbackImpl.class)
public interface IMqService {

//    /**
//     * 筛选司机
//     *
//     * @param orderParam 订单参数
//     * @return
//     */
//    @PostMapping("/didi/mq/getMqDriver")
//    Rv getMqDriver(@RequestBody OrderParam orderParam);
//
//    /**
//     * 司机抢单结果保护机制
//     *
//     * @param orderDetailParam
//     */
//    @PostMapping("/didi/mq/getDidiSheet")
//    void getDidiSheet(@RequestBody OrderDetailParam orderDetailParam);
//
//    /**
//     * 调度日志
//     *
//     * @param orderDetailParam
//     */
//    @PostMapping("/didi/mq/dispatchLog")
//    void getDispatchLog(@RequestBody OaSysDispatchLog orderDetailParam);
//
//    /**
//     * 创建滴滴订单
//     *
//     * @param createOrderParam 创建订单参数
//     */
//    @PostMapping("/didi/mq/createDidiOrder")
//    void createDidiOrder(@RequestBody CreateOrderParam createOrderParam);
//

    /**
     * 司机生成订单
     *
     * @param oaDOrder 司机接单表
     * @return
     */
    @PostMapping("/oa/dapi/order/addDriverOrderInfo")
    Boolean addDriverOrderInfo(@RequestBody OaDOrder oaDOrder);


    /**
     * 更新用户订单
     *
     * @param oaCOrderPersonal 用户订单表
     * @return
     */
    @PostMapping("/oa/capi/order/updateUserOrderInfo")
    Boolean updateUserOrderInfo(@RequestBody OaCOrderPersonal oaCOrderPersonal);

//    /**
//     * 滴滴取消订单
//     *
//     * @param orderDetailParam 取消原因
//     * @return
//     */
//    @PostMapping("/oa/dapi/order/updateOrderPersonalStatus")
//    void updateOrderPersonalStatus(@RequestBody OrderDetailParam orderDetailParam);
//

    /**
     * 抢单失败，修改状态
     *
     * @param orderNo
     * @return
     */
    @PostMapping("/oa/dapi/order/singleFailureStatus")
    Boolean singleFailureStatus(@RequestParam("orderNo") String orderNo);

    /**
     * 取消司机锁定
     *
     * @param driverId
     * @return
     */
    @PostMapping("/oa/dapi/order/driverUnlock")
    Boolean driverUnlock(@RequestParam("driverId") String driverId);

    /**
     * 获取司机手机号
     *
     * @param driverId 司机ID
     * @return
     */
    @PostMapping("/oa/dapi/order/getDriverPhone")
    String getDriverPhone(@RequestParam("driverId") String driverId);

    /**
     * 查询订单信息
     *
     * @param orderNo 订单号
     * @return
     */
    @PostMapping("/oa/dapi/order/billDetails")
    OaCOrderPersonal billDetails(@RequestParam("orderNo") String orderNo);

    /**
     * 查询订单状态
     *
     * @param orderNo
     * @return
     */
    @PostMapping("/oa/dapi/order/orderPersonalStatus")
    Integer orderPersonalStatus(@RequestParam("orderNo") String orderNo);

    /**
     * 查询订单其他费用
     *
     * @param orderNo
     * @return
     */
    @PostMapping("/oa/dapi/order/queryOrderOtherPrice")
    List<OaOrderOtherPrice> queryOrderOtherPrice(@RequestParam("orderNo") String orderNo);


    /**
     * 更新订单其他费用
     *
     * @param otherPrices 其他费用
     * @return
     */
    @PostMapping("/oa/dapi/order/updateOrderOtherPrice")
    boolean updateOrderOtherPrice(@RequestBody List<OaOrderOtherPrice> otherPrices);

    /**
     * 发起收款
     *
     * @param paymentParam
     * @return
     */
    @PostMapping("/oa/dapi/order/initiatePayment")
    Rv initiatePayment(@RequestBody InitiatePaymentParam paymentParam);

    /**
     * 发起收款
     *
     * @param order 参数
     * @return
     */
    @PostMapping("/oa/dapi/order/endTakingPassengers")
    Rv endTakingPassengers(@RequestBody OrderArrivalsParam order);

//    /**
//     * 生成司机接单列表
//     *
//     * @param orderParam 参数
//     * @return
//     */
//    @PostMapping("/didi/mq/generateOrderList")
//    void generateOrderList(@RequestBody OrderParam orderParam);
}
